package com.cskaoyan._01identifer;

/**
 * @description:
 * @author: 景天
 * @date: 2023/1/28 16:01
 **/
/*
- 标识符的开头必须是：
  - 字母（A~Z 和 a~z）
  - 下划线（_）
  - 美元符号（$）
  - **Unicode 字符集中编号为0xC0以及它后面的所有符号**
- 标识符的组成必须是：
  - 数字（0~9）
  - 字母（A~Z 和 a~z）
  - 美元符号（$）
  - 下划线（_）
  - **Unicode 字符集中编号为0xC0以及它后面的所有符号**


  通过以上标识符的语法要求，做几个总结：

1. 标识符不能以数字开头，但可以由数字组成。

2. 0xC0是一个十六进制数，Unicode 字符集中编号为0xC0后面的字符，
几乎包含了世界上绝大多数非英语国家的文字字符。

   这里面当然包括中文，韩文，日文等。所以标识符的命名从语法上来说，直接用中文是完全可以的,但是不允许使用。

3. Unicode 字符集兼容ASCII码表，Unicode 字符集中前128个字符就是ASCII码表中的字符。
所以Unicode 字符集中编号为0xC0以及它后面的所有符号是不含很多常用英文字符的，比如：英文逗号，英文句号，空格，回车等。

当然，标识符不能是Java中的关键字和保留字，并且标识符严格区分大小写。


建议初学者在定义标识符时要遵循以下几点规范：

- 包名所有字母一律小写，例如com.cskaoyan.example01（多级包名用“.”隔开）
- 类和接口每个单词的首字母大写，例如Student，Runnable，MyFirstProgram
- 常量名所有字母都大写，单词之间用下划线连接，例如STUDENT_MAX_AGE
- 变量名和方法名的第一个单词首字母小写，从第二个单词开始每个首字母大写，例如，userName，getStudentName


**约定俗称的规范：**

1. 标识符字符串尽量使用合法的英文单词（少数特殊情况可以用拼音）
2. 标识符字符串尽量只使用英文字母和阿拉伯数字。
3. 不要使用“$”美元符号，其在命名中有特殊含义，建议程序员不要主动使用它。
4. 尽量不要使用“_”下划线，其在命名中也有特殊含义，除开特殊场景不要使用它。
5. "$"或者“\_”即便出现，也严禁作为开头结尾！
 */
public class Demo {
    public static void main(String[] args) {
        int a = 1;
        int A = 1;
        int _A = 1;
        int $A = 1;
        int 你 = 1;
        int の = 1;

        int a1 = 1;
        int a2 = 1;
        int a$ = 1;
        int a_ = 1;
        // 最大年龄
        // 小驼峰
        int maxAge;

        // 常量命名 单词全部大写 中间用下划线连接
        final int  STUDENT_MAX_AGE = 10;

        // 变量命名 小驼峰
        int userName;

    }
    // 一个单词 小写单词
    public static void test() {

    }

    // 多个单词 使用小驼峰
    public static void getMaxAge() {

    }
}

// 大驼峰
class StudentAge{}

